{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 前面这两句话是忽略掉所有警告，免得干扰判断"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 利用sklearn包的随机森林分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import train_test_split\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取sonar.all-data.csv数据集\n",
    "### 这个数据集是加州大学欧文分校提供的声呐探测数据集，一共有208个样本，60个特征值。\n",
    "### 数据是声呐照射到物体上反射回来的各种角度、强度等等特征，用来识别被照射物是金属还是岩石\n",
    "### 结果为M的为金属（metal），R的为岩石（rock）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "sonar = pandas.read_csv(\"./data/sonar.all-data.csv\",header=None,prefix='X')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 修改列名，每个把最后一个列（结果列）的名称改为Label"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "sonar.rename(columns={'X60':'Label'}, inplace=True)\n",
    "sonar.Label = sonar.Label.astype('category')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X0</th>\n",
       "      <th>X1</th>\n",
       "      <th>X2</th>\n",
       "      <th>X3</th>\n",
       "      <th>X4</th>\n",
       "      <th>X5</th>\n",
       "      <th>X6</th>\n",
       "      <th>X7</th>\n",
       "      <th>X8</th>\n",
       "      <th>X9</th>\n",
       "      <th>...</th>\n",
       "      <th>X51</th>\n",
       "      <th>X52</th>\n",
       "      <th>X53</th>\n",
       "      <th>X54</th>\n",
       "      <th>X55</th>\n",
       "      <th>X56</th>\n",
       "      <th>X57</th>\n",
       "      <th>X58</th>\n",
       "      <th>X59</th>\n",
       "      <th>Label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0200</td>\n",
       "      <td>0.0371</td>\n",
       "      <td>0.0428</td>\n",
       "      <td>0.0207</td>\n",
       "      <td>0.0954</td>\n",
       "      <td>0.0986</td>\n",
       "      <td>0.1539</td>\n",
       "      <td>0.1601</td>\n",
       "      <td>0.3109</td>\n",
       "      <td>0.2111</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0027</td>\n",
       "      <td>0.0065</td>\n",
       "      <td>0.0159</td>\n",
       "      <td>0.0072</td>\n",
       "      <td>0.0167</td>\n",
       "      <td>0.0180</td>\n",
       "      <td>0.0084</td>\n",
       "      <td>0.0090</td>\n",
       "      <td>0.0032</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0453</td>\n",
       "      <td>0.0523</td>\n",
       "      <td>0.0843</td>\n",
       "      <td>0.0689</td>\n",
       "      <td>0.1183</td>\n",
       "      <td>0.2583</td>\n",
       "      <td>0.2156</td>\n",
       "      <td>0.3481</td>\n",
       "      <td>0.3337</td>\n",
       "      <td>0.2872</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0084</td>\n",
       "      <td>0.0089</td>\n",
       "      <td>0.0048</td>\n",
       "      <td>0.0094</td>\n",
       "      <td>0.0191</td>\n",
       "      <td>0.0140</td>\n",
       "      <td>0.0049</td>\n",
       "      <td>0.0052</td>\n",
       "      <td>0.0044</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0262</td>\n",
       "      <td>0.0582</td>\n",
       "      <td>0.1099</td>\n",
       "      <td>0.1083</td>\n",
       "      <td>0.0974</td>\n",
       "      <td>0.2280</td>\n",
       "      <td>0.2431</td>\n",
       "      <td>0.3771</td>\n",
       "      <td>0.5598</td>\n",
       "      <td>0.6194</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0232</td>\n",
       "      <td>0.0166</td>\n",
       "      <td>0.0095</td>\n",
       "      <td>0.0180</td>\n",
       "      <td>0.0244</td>\n",
       "      <td>0.0316</td>\n",
       "      <td>0.0164</td>\n",
       "      <td>0.0095</td>\n",
       "      <td>0.0078</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.0100</td>\n",
       "      <td>0.0171</td>\n",
       "      <td>0.0623</td>\n",
       "      <td>0.0205</td>\n",
       "      <td>0.0205</td>\n",
       "      <td>0.0368</td>\n",
       "      <td>0.1098</td>\n",
       "      <td>0.1276</td>\n",
       "      <td>0.0598</td>\n",
       "      <td>0.1264</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0121</td>\n",
       "      <td>0.0036</td>\n",
       "      <td>0.0150</td>\n",
       "      <td>0.0085</td>\n",
       "      <td>0.0073</td>\n",
       "      <td>0.0050</td>\n",
       "      <td>0.0044</td>\n",
       "      <td>0.0040</td>\n",
       "      <td>0.0117</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0762</td>\n",
       "      <td>0.0666</td>\n",
       "      <td>0.0481</td>\n",
       "      <td>0.0394</td>\n",
       "      <td>0.0590</td>\n",
       "      <td>0.0649</td>\n",
       "      <td>0.1209</td>\n",
       "      <td>0.2467</td>\n",
       "      <td>0.3564</td>\n",
       "      <td>0.4459</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0031</td>\n",
       "      <td>0.0054</td>\n",
       "      <td>0.0105</td>\n",
       "      <td>0.0110</td>\n",
       "      <td>0.0015</td>\n",
       "      <td>0.0072</td>\n",
       "      <td>0.0048</td>\n",
       "      <td>0.0107</td>\n",
       "      <td>0.0094</td>\n",
       "      <td>R</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 61 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       X0      X1      X2      X3      X4      X5      X6      X7      X8  \\\n",
       "0  0.0200  0.0371  0.0428  0.0207  0.0954  0.0986  0.1539  0.1601  0.3109   \n",
       "1  0.0453  0.0523  0.0843  0.0689  0.1183  0.2583  0.2156  0.3481  0.3337   \n",
       "2  0.0262  0.0582  0.1099  0.1083  0.0974  0.2280  0.2431  0.3771  0.5598   \n",
       "3  0.0100  0.0171  0.0623  0.0205  0.0205  0.0368  0.1098  0.1276  0.0598   \n",
       "4  0.0762  0.0666  0.0481  0.0394  0.0590  0.0649  0.1209  0.2467  0.3564   \n",
       "\n",
       "       X9  ...     X51     X52     X53     X54     X55     X56     X57  \\\n",
       "0  0.2111  ...  0.0027  0.0065  0.0159  0.0072  0.0167  0.0180  0.0084   \n",
       "1  0.2872  ...  0.0084  0.0089  0.0048  0.0094  0.0191  0.0140  0.0049   \n",
       "2  0.6194  ...  0.0232  0.0166  0.0095  0.0180  0.0244  0.0316  0.0164   \n",
       "3  0.1264  ...  0.0121  0.0036  0.0150  0.0085  0.0073  0.0050  0.0044   \n",
       "4  0.4459  ...  0.0031  0.0054  0.0105  0.0110  0.0015  0.0072  0.0048   \n",
       "\n",
       "      X58     X59  Label  \n",
       "0  0.0090  0.0032      R  \n",
       "1  0.0052  0.0044      R  \n",
       "2  0.0095  0.0078      R  \n",
       "3  0.0040  0.0117      R  \n",
       "4  0.0107  0.0094      R  \n",
       "\n",
       "[5 rows x 61 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sonar.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 把结果改为数值型，主要是在训练的是模型只认数值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "sonar[\"Label\"] = sonar[\"Label\"].map({\"R\":0,\"M\":1})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 抽取最后一个列为y 列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "data, labels = sonar.iloc[:, :-1], sonar.iloc[:, -1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 随机提取33%的数据作为测试子集的样本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = \\\n",
    "  train_test_split(data, labels, test_size=0.33, random_state=44)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 执行随机森林分类，最大树深度定义为2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf = RandomForestClassifier(max_depth=2, random_state=0)\n",
    "clf.fit(X_train, y_train)\n",
    "pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 利用测试子集进行验证，获得分类精度得分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7101449275362319"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 对列抽样的数量，实际上和分类的精度关系不大"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "col = sonar.columns.tolist()\n",
    "x = []\n",
    "y = []\n",
    "for i in range(5,len(col)-1):\n",
    "    x.append(i)\n",
    "    colname = col[:i]\n",
    "    colname +=[\"Label\"]\n",
    "    subsonar = sonar.loc[:,colname]\n",
    "    data, labels = subsonar.iloc[:, :-1], subsonar.iloc[:, -1]\n",
    "    X_train, X_test, y_train, y_test = \\\n",
    "      train_test_split(data, labels, test_size=0.33, random_state=44)\n",
    "    clf = RandomForestClassifier(max_depth=2, random_state=10)\n",
    "    clf.fit(X_train, y_train)\n",
    "    y.append(clf.score(X_test, y_test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 下面x坐标是参与训练的列的数量，y是分类的得分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BarContainer object of 55 artists>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAswAAAFpCAYAAACI6H7aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XlclWX6P/DPzS4gCAjKouIu2GKGZolLq7lbTaVY0zbT1ORMizVT0zQ19a1pZmxqftVMy7RMM6JZMxO4lLa5YJpgmQtuqIAICgiKiOz374/7PHBAOJzlOec5y+f9evECHp7lBg6c69zPdV+XkFKCiIiIiIi65mf0AIiIiIiI3BkDZiIiIiIiCxgwExERERFZwICZiIiIiMgCBsxERERERBYwYCYiIiIissCqgFkIcb0QYr8QokAI8XgXXx8khPhSCLFTCLFeCJFk9rU7hBAHTW936Dl4IiIiIiJnEz3VYRZC+AM4AOBaACUAcgEskFLmm+3zEYBVUsp/CiGuAnCXlPJ2IUQ0gDwAaQAkgO0ALpVSVjvluyEiIiIi0pk1M8zjARRIKQ9LKRsBLAcwt9M+qQC+NH38tdnXpwH4XEpZZQqSPwdwvePDJiIiIiJyDWsC5kQAR80+LzFtM/cDgJtMH98AoLcQIsbKY4mIiIiI3FaAFfuILrZ1zuN4FMBrQog7AWwEcAxAs5XHQghxL4B7ASAsLOzSUaNGWTEsIiIiIiL7bd++vVJKGdvTftYEzCUABph9ngSg1HwHKWUpgBsBQAgRDuAmKeVpIUQJgKmdjl3f+QJSyrcAvAUAaWlpMi8vz4phERERERHZTwhRZM1+1qRk5AIYLoQYLIQIAjAfQHani/UVQmjnegLAu6aP1wK4TggRJYSIAnCdaRsRERERkUfoMWCWUjYDWAQV6O4FsEJKuUcI8awQYo5pt6kA9gshDgDoB+B507FVAJ6DCrpzATxr2kZERERE5BF6LCvnakzJICIiIiJXEEJsl1Km9bQfO/0REREREVnAgJmIiIiIyAIGzEREREREFjBgJiIiIiKygAEzEREREZEFDJiJiIiIiCxgwExEREREZAEDZiIiIiIiCxgwExERERFZwICZiIiIiMgCBsxERERERBYwYCYiIiIisoABMxERERGRBQyYiYiIiIgsYMBMRERERGQBA2YiIiIiIgsYMBMRERERWcCAmYiIiIjIAgbMREREREQWMGAmIiIiIrKAATMRERERkQUMmImIiIiILGDATERERERkAQNmIiIiIiILGDATEREREVnAgJmIiIiIyAIGzEREREREFjBgJiIiIiKygAEzEREREZEFDJiJiIiIiCxgwExEREREZAEDZiIiIiIiCxgwExERERFZwICZiIiIiMgCBsxERERERBYwYCYiIiIisoABMxERERGRBQyYiYiIiIgsYMBMRERERGQBA2YiIiIiIgsYMBMRERERWcCAmYiIiIjIAgbMREREREQWMGAmIiIiIrKAATMRERERkQUMmImIiIiILLAqYBZCXC+E2C+EKBBCPN7F1wcKIb4WQnwvhNgphJhh2p4shDgnhNhhentD72+AiIiIiMiZAnraQQjhD+B1ANcCKAGQK4TIllLmm+32WwArpJR/F0KkAlgDINn0tUNSyjH6DpuIiIiIyDWsmWEeD6BASnlYStkIYDmAuZ32kQAiTB9HAijVb4hERERERMaxJmBOBHDU7PMS0zZzzwC4TQhRAjW7/Auzrw02pWpsEEJM6uoCQoh7hRB5Qoi8iooK60dPRERERORk1gTMoottstPnCwC8L6VMAjADwL+EEH4AygAMlFJeAuARAJlCiIhOx0JK+ZaUMk1KmRYbG2vbd0BERERE5ETWBMwlAAaYfZ6E81Mu7gGwAgCklFsAhADoK6VskFKeNG3fDuAQgBGODpqIiIiIyFWsCZhzAQwXQgwWQgQBmA8gu9M+xQCuBgAhRApUwFwhhIg1LRqEEGIIgOEADus1eCIiIiIiZ+uxSoaUslkIsQjAWgD+AN6VUu4RQjwLIE9KmQ1gMYC3hRAPQ6Vr3CmllEKIyQCeFUI0A2gBcJ+Usspp3w0RERERkc6ElJ3TkY2VlpYm8/LyjB4GEREREXk5IcR2KWVaT/ux0x8RERERkQUMmImIiIiILGDATERERERkAQNmIiIiIiILGDATEREREVnAgJmIiIiIyAIGzEREREREFjBgJiIiIiKygAEzEREREZEFDJiJiIiIiCxgwExEREREZAEDZiIiIiIiCxgwExERERFZwICZiIiIiMgCBsxERERERBYwYCYiIiIisoABMxERERGRBQyYiYiIiIgsYMBMRERERGQBA2YiIiJvc+YMcNttQEmJ0SMh8goB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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "plt.ylim(0.6,0.9)\n",
    "plt.plot(x,y,color=\"r\")\n",
    "plt.bar(x,y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 反正相关性都很不咋地"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>x</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.060158</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>y</th>\n",
       "      <td>-0.060158</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          x         y\n",
       "x  1.000000 -0.060158\n",
       "y -0.060158  1.000000"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAD8CAYAAAB3u9PLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3X2QXFd55/Hv07d7Xm1ZozeQJdmSFmHZDokNg4CYVYRZg0glNlXrUFJCAgmJnS1MEUhYYCsxWW1RBbuVOGTLYe0YcJIChOPEoEoIjoOtKKEMaIzNi4QNQibWWMYj22NbaGY0/fLsH/femds93TN3NP0+v0/VVE+fvn36nJ6e+/R5ueeYuyMiIpJpdQFERKQ9KCCIiAiggCAiIhEFBBERARQQREQkooAgIiKAAoKIiEQUEEREBFBAEBGRSLbVBViMNWvW+ObNm1tdDBGRjvLQQw894+5rFzquowLC5s2bGRkZaXUxREQ6ipn9R5rj1GUkIiKAAoKIiEQUEEREBFBAEBGRiAKCiIgACggiIhJRQBARESBlQDCz3Wb2mJkdM7MPVXn8IjN7wMweNrPvmNkvRunXmNlDZvbd6PbqxHMORnk+Ev2sq1+1RKQVDj46xt7bv87rP34/e2//OgcfHWt1kWQRFrwwzcwC4FbgGmAUOGxmB9z9aOKwPwTucvdPmtllwJeBzcAzwC+7+0kz+xngXmBD4nm/5u660kykCxx8dIybDxwhFxgr+3OMnZ7i5gNH2Afs2q7ve50gTQthB3DM3Y+7+zSwH7iu4hgHVkS/XwCcBHD3h939ZJR+BOgzs96lF1tE2s1th46TC4yBnixm4W0uMG47dLzVRZOU0gSEDcCJxP1Ryr/lA/wx8HYzGyVsHbynSj7/FXjY3c8m0j4TdRf9kZlZ+mKLSLs5MT5Bfy4oS+vPBYyOT7SoRLJYaQJCtRO1V9zfC9zp7huBXwT+xsxm8jazy4GPAzcmnvNr7v4K4D9HP79e9cXNbjCzETMbOXXqVIriikgrbBoaYDJfLEubzBfZODTQohLJYqUJCKPApsT9jURdQgnvAu4CcPcHgT5gDYCZbQTuAX7D3X8UP8Hdn4xuTwOfI+yamsPdb3f3YXcfXrt2wcX6RKRFbty5lXzRmZgu4B7e5ovOjTu3trpoklKagHAY2GZmW8ysB9gDHKg45gngjQBmdilhQDhlZiuBfwQ+7O5fiw82s6yZxQEjB/wS8L2lVkZEWmfX9nXsu/Zy1p3fxwuTedad38e+ay/XgHIHWXCWkbsXzOwmwhlCAfBpdz9iZvuAEXc/APw+8Jdm9j7C7qR3urtHz3sZ8Edm9kdRlm8CzgD3RsEgAP4F+Mt6V05EmmvX9nUKAB3M3CuHA9rX8PCwaz8EEZHFMbOH3H14oeN0pbKIiAAKCCIiElFAEBERQAFBREQiCggiIgIoIIiISEQBQUREgBQXpoksxcFHx7jt0HFOjE+waWiAG3du1YVLDaD3WepBLQRpmHh9/LHTU2Xr42vTlPrS+yz1ooAgDaP18ZtD77PUiwKCNIzWx28Ovc9SLwoI0jBaH7859D5LvSggSMNoffzm0Pss9aKAIA2j9fGbQ++z1IuWvxYR6XJa/lpERBZFAUFERAAFBBERiSggiIgIkDIgmNluM3vMzI6Z2YeqPH6RmT1gZg+b2XfM7BcTj304et5jZvbmtHmKiEhzLRgQzCwAbgXeAlwG7DWzyyoO+0PgLne/EtgD/EX03Mui+5cDu4G/MLMgZZ4iItJEaVoIO4Bj7n7c3aeB/cB1Fcc4sCL6/QLgZPT7dcB+dz/r7o8Dx6L80uQpIiJNlCYgbABOJO6PRmlJfwy83cxGgS8D71nguWnyFBGRJkqzH4JVSau8mm0vcKe7/4mZvQ74GzP7mXmeWy0QVb1CzsxuAG4AuOiii1IUVzrBUtfvX+zzu2W/gEbWo1F518q3W/4m3SRNC2EU2JS4v5HZLqHYu4C7ANz9QaAPWDPPc9PkSZTf7e4+7O7Da9euTVFcaXdLXb9/sc/vlv0CGlmPRuVdK98//5cfdMXfpNukCQiHgW1mtsXMeggHiQ9UHPME8EYAM7uUMCCcio7bY2a9ZrYF2AZ8M2We0qWWun7/Yp/fLfsFNLIejcq7Vr53/PvjXfE36TYLBgR3LwA3AfcC3yecTXTEzPaZ2bXRYb8P/I6ZfRv4PPBODx0hbDkcBb4CvNvdi7XyrHflpD0tdf3+xT6/W/YLaGQ9GpV3rXzPTBe74m/SbVLtqezuXyYcLE6m3Zz4/ShwVY3nfhT4aJo8ZXnYNDTA2OkpBnpmP36LWb9/sc9f6uu1i0bWo1F518p3sCdgMl/s+L9Jt9GVytJ0S12/f7HP75b9AhpZj0blXSvf3379lq74m3QbLX8tLRHPMBkdn2DjEmYZpX3+Ul+vXTSyHo3Ku1a+3fI36QRpl79WQBAR6XLaD0FERBZFAUFERAAFBBERiSggiIgIoIAgIiIRBQQREQEUEEREJNJRAaHkMF0o0UnXToiIdIpUaxm1i3yxNLP4VTaTIRsY2cDIZTIE0W02MHJB6+JcI9d+b+d15duhDO1UjmrauWzz6dRyN0K3vxcddaXyK654pX/pvkMLHmdm5AKjJ8iQCzL0ZMOfRgeKeO33XGD058LFu/JF5/pXbuDubz05J33ftZen/jA1Mu+lqlW2ZpahncrRaWWbT6eWuxE6+b1Y1lcquzvThRI/PVtgfGKap1+c4sRzE/z4mTOcfH6SZ356ltNTeaYLpbq+biPXfm/ndeXbZb+BdilHp5VtPp1a7kZYDu9FR3UZLVXJnal8kal8cSYtyBh9uYC+bEBfT4bebDBPDvM7MT7Byv5cWVq89vtFS1z7vZF5L1WtsjV7bft2KUc17Vy2+XRquRthObwXXdlCWIxiyTlztsCzZ87y5PgkTzw7wdjpKV6YyDMxXVjUIPamoQEmE8EGytd+r0xfzNrvjcx7qWqVrdlr27dLOapp57LNp1PL3QjL4b1Y9gGhUqFU4qdTYYD4yQtTjI5P8ONnJxgdnw0UU/li1SDRyLXf23ld+XbZb6BdytFpZZtPp5a7EZbDe9GVg8rNEA9c92aDcPA6G85u+toPn2nY2u/tvK58O5ShncpRTTuXbT6dWu5G6NT3oiv3Q2ingFBLkDF6suFYRC6aAtsTZMhkrNVFE5FlpFAsUSiF5/f+nmyqgJBqUNnMdgOfAALgDnf/WMXjtwBviO4OAOvcfaWZvQG4JXHodmCPu3/RzO4EfgF4IXrsne7+SJrytLNiyZmcLjI5Xd7XmLxuIp4OG0+JFRE5F/FJf7pYolB08sUS04UwLf6yf15f+rlDCx5pZgFwK3ANMAocNrMD7n40Psbd35c4/j3AlVH6A8AVUfoq4Bjwz4nsP+Dud6cubQcrlEoUSkC+PH3mmolsht4gIJcNA0a2hRfXiUh7KJWcfKlEseQUSk6h6BSKpZkAUKpzD0+a0LEDOObuxwHMbD9wHXC0xvF7gY9USb8e+Cd37545WnUQXjMRXTdBYSY9Y0Yum5m5wC4bdT3lAsNM3U8inS48yYcn+3zRy+4Xovv1PuEvJE1A2ACcSNwfBV5T7UAzuxjYAtxf5eE9wJ9WpH3UzG4Gvgp8yN3PpijPslBy52y+yNkqLYpsNE6RiwJE3P0UaJxCpC0kv9knT/aFmd+9LddkSxMQqp1latVkD3C3u5d1oJvZeuAVwL2J5A8DPwF6gNuBDwL75ry42Q3ADQAXbtyUorjdzT38gOWLc6+yDjKzwSE586mVazuJdKu4/z4f99+XZvvxi6X2O9mnkSYgjALJM/FG4GSNY/cA766S/jbgHnef+b7r7k9Fv541s88Af1AtQ3e/nTBg8IorXtmZ73KTFEtOsVR+JTaUtyqymbArqicIf9dYhUh18ZevQqk08yUsPuG36zf8pUoTEA4D28xsC/Ak4Un/VysPMrNLgCHgwSp57CVsESSPX+/uT1nYIf5W4HuLLLukNF+rYmasIm5dJMYtNFYh3STuky+WHPewWzb8Cbt44sfyJacYBYLlZsGA4O4FM7uJsLsnAD7t7kfMbB8w4u4HokP3Avu9Imya2WbCFsa/VmT9WTNbS9gl9Qjwu0upiJybmbGKKo/lgsQ4RdSq6M0qUEh7qpyCWSiWyJfC207twmk2XZgmi5bNhOMT2Uz5oLZmQEkjVQ7UFoqJrpwu7cKph/P6srxkRX/9LkyT5vrm8efYf/gET704yfoV/ex59SZ2bF3V9DxqKZRKFKYB5o5VVF5T0c6D2o3c7KTbN1JphOTgbL4wO2BbKkHRdcJvBrUQ2sw3jz/HJ+7/IdmM0ZfLMJUP/zHee/W21Cf0euRRT3GgyMUD2ZnWz4Bq5GYnnbyRSr25h/31TjzpoXzufTwVU9/wG0cthA62//AJspnwRALMnFD2Hz6R+mRejzzqKXnxXaU5wSLqegoy4ZaojVoDKrnZCcBAT5aJ6QK3HTq+5JN2I/NuJY8GYAul2W/txZJTKjlFD28LJS8bvJXOooDQZp56cZIVFWuP9OUy/OTFyabm0SzzBQsIZ0EFmXANqCBqXWSDcBptkDECO7eps43c7KRTNlIpRl0y0/H6N8XyWThJjk7wy4ECQptZv6KfZ8+cnfl2DzCVL/HSFf1NzaNdlNwpFZ2KSyvmyGYyBIGRiwNFxU82U34l96ahAcZOT818i4f6bXbSyLwXo6x7plB+4ZS6aKQaBYQ2s+fVm/jE/T9kMl8s6//f8+r0V2nXI49OEy8eON/aJ/EFemZw/as28Cf3/YBCyenPZTibD6co/ubPb2a6UCJj4fEGi+62unHnVm4+cISJ6ULZGMJSNlLJJxYzS86dLyS6Z0o++81eJ3w5FxpUbkPxDKGfvDjJS5c4y2gpeXS7xbxHZkbGwi6sTGa2yyqbCe9nLOy+ih16bIxPfe3HPPn8BBde0M87XreZn9+2pmrecd98MeqLj/8nzWzmpN9J/6fSXhYzqKyAICLSxRYTENpzgriIiDSdAoKIiAAKCCIiEumoWUZPPDfB++/6Nj2JxdaSO4nFexT3VCzINrPWTja5n3Fyk5nZ5yTTtOGMiCwnHRUQpvJFHjnxfNNeL2NEG81kygJJ8n4cnKptTNNTZaOa2aA1G8Aqdz4rC2paOE5EmqSjAsLq83p4+2svIl8oMR1dYJOPrrKcTqx8mC/M/h5fhZlPPD5dKNXc8i2p5DBVKDFV4yraZov3KUi2eJKBqCdbuWNaouU0E3wqglPcKkoEuWz0Oj0Vr5MMjmo9iXSfzgoIg7381lVblpyPxxthFD0KJFWCRhxoouBSiFZgnC5GwWjm+PDx2aA0e3/28dkAFh9XSAS0fDHd1N+wbEUqVxlthflaTzMtp0SLp1rrqbJVVBaggvKWU7IlNRvsZvNR60lk6ToqINSLWbg2TjaAfoKFn9Bg8Y5mMwElCkKVwWq6WAqXICiWEo95WeBJBqOyVlNZPk61IBgHvDRL1rRj66lWEJnbPZcILHPGluIgVz3wzAmAFQGvJ5uZucpZpNMsy4BQL/Xac8DM6MmG34wbLS7z8xPTM2UGyurxK6/ayBUXr+QbP3qWv/vWkzx9eoo1g7286fKXcMlLz+fbJ17gq99/mmfPnGVlfw+v3bqaTasHylpFyWCTbDnly1pSYUCL7/90qsCLU3kKJcei9yXtgmrt1nqqFpxqjUOdnsrzxHMTTOWLDPZmuWz9Ci5aPVAWpOZ2B1Z2BVa0uKL0bBBeRd1JGrmXRzuoVb92qLeuVD5H7bbnQBrVyvzTswUAzuvNltVj92Uv4StHn55Tv1rpS613rffzzZeu4ytHnybIhAFzKl+kUHTe/pqLuWT9+XNbOTPdcpWtoIrgVPCywBSPS41PTPOTF6ZmylVyx4HAjEKHrvaZjffLTnTH1W4dVR8/Kh9DKm89Jcepas3gi8evgsz83Xud+H+1GLXq16j/K9B+CE3RbnsOpFGtzE+fngKHtef1zqRN5ovc9dAoqwZ75tSvVvpS613r/fzbbz1Z9nq53gyT+SIPPHaKX77iwnN+vVre/4VvY9HrxybzRZ47M836wR76shkccA/TL+jP8cG3bK8+DlXRRZfslou79h54dIzJfJFMxsKNZKLxrWyQ4eKyVlf5uFScRxqFklMoFZnM1/3tWjSDMJBkEsEpEVieHJ+kUPIwcBCuHVV05//882PsfPnaKsGmdnfgnJZTNjHzL2qlNbv1VOtz3qj/q8VKFRDMbDfwCSAA7nD3j1U8fgvwhujuALDO3VdGjxWB70aPPeHu10bpW4D9wCrgW8Cvu/v00qrTPJ2050CsWplLVda+78tlZlZKTZu+1HrXej8b9XrnWg4jPFFhMNgbMD4xzUWrzn1Z60M/PMWFg31xrkC498DpqQL/d++V8z43HnsqlGYnP1SbJDGn+64ysBS85oSI6SppcwNemJame88hbMEBZ6bTd+9NTBe55+EnUx+fVpCxsokKtVo5c4NMte7AxDhWIi3ZXfjE+BnO680yXShh0WKJPYExMV1k/QXlwakV55MFA4KZBcCtwDXAKHDYzA64+9H4GHd/X+L49wDJT/Kku19RJeuPA7e4+34z+3/Au4BPnls1mq8T9xyoVuZMxqicgzuVL9GfC2Zu06Qvtd613s9GvV67lGMpn6OZsScyDPQsqRh1EW+4Uy34VE6ISN5PzsQ78MhJJqYLBIkWU77k9AQZLr9wxZwWVxwIkwEsTktb5mLJmco3b3LEc2eqN9WOnZqIxs6Y+YIQBMZv3Xl4bquo8qLbGhfm5oLMnC8480lz5A7gmLsfBzCz/cB1wNEax+8FPjJfhhZ2Il4N/GqU9FfAH9NBAaET9xyoVubBaBOXynq87VUb+crRp1OnL7Xetd7PRr1eu5SjEz9HtYSbEQX05c595t7W1YN1GUNwD5cNT44XJWfxFUpedo1SPFuvUBFUFmpJlY9DVQa82TzSjj/F3ZHxt7Riwfnxs83baS9NQNgAnEjcHwVeU+1AM7sY2ALcn0juM7MRoAB8zN2/CKwGnnf3QiLPDYsse0vt2LqK97Kto/YcqFbmd+96GUDVelzy0hWLSq932Rr5eu1Sjk78HDVSvd6P5F7dtEHrqeQ+EyC+cfxZ7nn4JGOnJ1l9Xh/XXLqOl7/0fL4z+gL3f3+M5ybOckF/Dzs2r2Ljqv75p4onrm2qnD4+E4yKzn+kLOeCs4zM7FeAN7v7b0f3fx3Y4e7vqXLsB4GNycfM7EJ3P2lmWwkDxRuBF4EH3f1l0TGbgC+7+yuq5HkDcAPAhRs3verfvlWrYSIiIpXqvR/CKJBsv24ETtY4dg/w+WSCu5+Mbo8DBwnHF54BVppZ3EKpmae73+7uw+4+vGp19R2nRERk6dIEhMPANjPbYmY9hCf9A5UHmdklwBDwYCJtyMx6o9/XAFcBRz1sljwAXB8d+g7gS0upiIiILM2CASHq578JuBf4PnCXux8xs31mdm3i0L3Afi/vg7oUGDGzbxMGgI8lZid9EHi/mR0jHFP41NKrIyIi50pXKovUQfLq2076n5LupyuVpWtkzGYu4LFo0bhMfB8g8bvN3M4+f+aCL5tNj4+NlTy6OM/Di8Li83kmY2Qz4XILM69f8Tq1lmHwKM+SO6XolkTZ4seKJadUCl+3FM27T94W3SmVfOZYkUZSQJBFMQtPktlg9kQJzJxE45N3JnHyNjOC6IQaZGZ/X+h1OpnFgYz61qNUCtdWCgNNGEyKUbAolsKrluO0OJDEAUZkIQoIy1B8Us9kEt+2Z07k0Qk7w8xaMhkLT/7xc6R14vc/WGSgKZV8JnDEc9Pzpdl9OdT6EFBA6EjJb9zh/dlv1LMn8fDkEZgRBEYuk9FJfRnLZIwMRi6g6pXEpVIYIOIlyvOJ9ZHUulg+FBBabM4a6Ds2cdXL1oQn78DIRifyeOng+L60h4OPjnHboeOcGJ9g09AAN+7cyq7t61pdrBnVygdULXNvJqA3C/SW5zG7vMPssg5fO/YM+7/ZWXsWNHK/gWp5Ay3f32CxNMuoRcyMkcef45av/oCeIEN/LuBsoUihBPuuvbytTipS3cFHx7j5wBFygc0sV5wvetv8/aqV74XJPAas6M+dc5njfLOZsLUxOV1kuuh84E2XsGPrqpnxjFIbnVsauc/CYvYZacW+DvW+UlkWIVxDJUN/T8B5vVnO78txQX+OVYM9rD2/lwtX9rNp1QBb1gzy9w8/SX8u4Py+HNkgw2Bvjlxg3HboeKurISncdug4ucAY6MliFt6209+vWvl+erbA6anCksoc5zvYmyPIZDivL0dfLsMXRk7MfL43rxlky5pBNg4N8NIL+lg92BsGoZ6AbKb5p53kPgRGeJvNGPsPn1j4yeeQ95npAmfOFhryeo2kLqNFigdk4yVns0FmZtbNYrtzToxPsLI/V5bWnwsYHW/e6oZy7tr971etfMXS3DGBxZY5bb2Ty3NXLjAXr0ZaiPZziAe580Wn0IBB7kbuX7KYfUbaeb8UUEAAmJ1FE53Us5lwIDaw2amV8Wyceg7IbhoaYOz0FAM9s3+GyXyRjUPnvuGKNE+7//2qlS/IGHj5Z3ixZa5HvWdXI4Vw361yc/ZWSGzQcy4auX/JYvYZaef9UmAZdBmF3+gz9OYCBnuzrOjPsXqwl5es6GPDUD8Xrx5k85pBNq0aYP0F/aw9v5ehwR5W9OUY7M3SlwuizcozdZ+dc+POreSLzsR0AffwNl/0mYE/aW/t/verVr6wGzO7pDI3o95BxuiLulNXDfbw0gv6ZrpaNwz1s25FH0MDPZzXm6UnxVaYe169iULJmcwXccLbeu07US3vwZ4sg73ZhrxeI3X0oHLGwm/1PdHJOp5iGdi5deG0QjwLZHR8go1tOEtF5tfuf79q5QOWXOZ2rPd0ocTZQpGzUWsivsYiFs8EasS+E9Xyhur7jDTbYgaVOyogXPnKV/m/PfiNmT78dj/Zi0hrxftOx9NlzxaKTBeW14V4XbuWUZAxzuvtqCKLSAvNDGxnM2XXVyS3ykzuONZJX5AbQWdXEVl2skE4LjiQmP2UbE3kC6WyPZeXCwUEERFqtybcPREcyvc27jYKCCIi8zAzerMBvdny6bGlUhQoEgGi08cnFBBERM5BJmP0ZYI5iwUWS1627lMcKNppKY9aFBBEROooyBj9PQH9FRfcxQPZ+cJsy6IRV2UvhQKCiEgTxAPZlct4xFdlt0PXU6qAYGa7gU8QXmN+h7t/rOLxW4A3RHcHgHXuvtLMrgA+CawAisBH3f0L0XPuBH4BeCF63jvd/ZGlVUdEpLMEGSOo0vVUKJZmLrKLp8U2ukWxYEAwswC4FbgGGAUOm9kBdz8aH+Pu70sc/x7gyujuBPAb7v5DM7sQeMjM7nX356PHP+Dud9epLiJdpd33WmimWu9FN79HMy2KCsnNjAqJYJGvwzhFmhbCDuCYux8HMLP9wHXA0RrH7wU+AuDuP4gT3f2kmY0Ba4HnazxXRCjfy2Blf46x01PcfOAI+6BrTnhp1Xovrh99nru/9eSye48yGZvdzKhCIV4MsDi7GGCwiP3J0yxutwFILuI9GqXNYWYXA1uA+6s8toOw9+xHieSPmtl3zOwWM+utfI7IctXuey00U6334o5/f1zvUYVstBfLBf051pzXy/oL+ll9XvpTa5qAUC281GqX7AHudvdiWQZm64G/AX7T3eOrOT4MbAdeDawCPlj1xc1uMLMRMxs5depUiuKKdL4T4xNlyylDe+210Ey13osz00W9R3WWJiCMAsk1WzcCJ2scuwf4fDLBzFYA/wj8obt/PU5396c8dBb4DGHX1Bzufru7D7v78Nq1a1MUV6TzbRoaYDJf9r2qrfZaaKZa78VgT6D3qM7SBITDwDYz22JmPYQn/QOVB5nZJcAQ8GAirQe4B/hrd//biuPXR7cGvBX43rlWQqTbtPteC81U67347ddv0XtUZwsOKrt7wcxuAu4lnHb6aXc/Ymb7gBF3j4PDXmC/ly8X+DZgJ7DazN4ZpcXTSz9rZmsJu6QeAX63LjUS6QK7tq9jH0vft6AbzPde/OzGlXqP6qij9kMYHh72kZGRVhdDRKSjmFmq/RC6fgtNERFJRwFBREQABQQREYkoIIiICKCAICIiEQUEEREBFBBERCSigCAiIoACgoiIRLSFZsJy3IRDpBst5n9W/9+ztHRFJLkJR38uXEUxX3Suf+WGmU04kun7rr182X5oRNpZrf/lav+zizm2k2npikXSJhwi3WExmwtpI6JyCggRbcIh0h0Ws7mQNiIqp4AQ0SYcIt1hMZsLaSOicgoIEW3CIdIdFrO5kDYiKqdZRhFtwiHSHRazuZA2IiqnWUYiIl1Os4xERGRRFBBERARIGRDMbLeZPWZmx8zsQ1Uev8XMHol+fmBmzycee4eZ/TD6eUci/VVm9t0ozz83M6tPlURE5FwsOKhsZgFwK3ANMAocNrMD7n40Psbd35c4/j3AldHvq4CPAMOAAw9Fzx0HPgncAHwd+DKwG/inOtVLREQWKU0LYQdwzN2Pu/s0sB+4bp7j9wKfj35/M3Cfuz8XBYH7gN1mth5Y4e4Pejiq/dfAW8+5FiIismRpAsIG4ETi/miUNoeZXQxsAe5f4Lkbot8XzFNERJojTUCo1rdfa67qHuBud48v/av13NR5mtkNZjZiZiOnTp1asLAiInJu0gSEUWBT4v5G4GSNY/cw210033NHo98XzNPdb3f3YXcfXrt2bYriiojIuUgTEA4D28xsi5n1EJ70D1QeZGaXAEPAg4nke4E3mdmQmQ0BbwLudfengNNm9tpodtFvAF9aYl1ERGQJFpxl5O4FM7uJ8OQeAJ929yNmtg8Ycfc4OOwF9nvi0md3f87M/hdhUAHY5+7PRb//N+BOoJ9wdpFmGImItJCWrhAR6XJaukJERBZFAUFERAAFBBERiSggiIgIoIAgIiIRBQQREQEUEEREJKKAICIigAKCiIhEFBBERARQQBARkYgCgoiIAAoIIiISWXD562518NExbjt0nBPjE2waGuDGnVvZtX1dq4slIm1guZ4flmUL4eAQPmpuAAAJH0lEQVSjY9x84Ahjp6dY2Z9j7PQUNx84wsFHx1pdNBFpseV8fliWAeG2Q8fJBcZATxaz8DYXGLcdOt7qoolIiy3n88OyDAgnxifozwVlaf25gNHxiRaVSETaxXI+PyzLgLBpaIDJfLEsbTJfZOPQQItKJCLtYjmfH5ZlQLhx51byRWdiuoB7eJsvOjfu3NrqoolIiy3n80OqgGBmu83sMTM7ZmYfqnHM28zsqJkdMbPPRWlvMLNHEj9TZvbW6LE7zezxxGNX1K9a89u1fR37rr2cdef38cJknnXn97Hv2suXxSwCEZnfcj4/mLvPf4BZAPwAuAYYBQ4De939aOKYbcBdwNXuPm5m69x9rCKfVcAxYKO7T5jZncA/uPvdaQs7PDzsIyMjaQ8XERHAzB5y9+GFjkvTQtgBHHP34+4+DewHrqs45neAW919HKAyGESuB/7J3bt/ZEZEpAOlCQgbgBOJ+6NRWtLLgZeb2dfM7OtmtrtKPnuAz1ekfdTMvmNmt5hZb+pSi4hI3aUJCFYlrbKfKQtsA3YBe4E7zGzlTAZm64FXAPcmnvNhYDvwamAV8MGqL252g5mNmNnIqVOnUhRXRETORZqAMApsStzfCJyscsyX3D3v7o8DjxEGiNjbgHvcPR8nuPtTHjoLfIawa2oOd7/d3YfdfXjt2rUpiisiIuciTUA4DGwzsy1m1kPY9XOg4pgvAm8AMLM1hF1Iycv69lLRXRS1GjAzA94KfO9cKiAiIvWx4OJ27l4ws5sIu3sC4NPufsTM9gEj7n4geuxNZnYUKAIfcPdnAcxsM2EL418rsv6sma0l7JJ6BPjd+lRJRETOxYLTTtuJpp2KiCxePaediojIMqCAICIigAKCiIhEFBBERARQQBARkYgCgoiIAAoIIiISUUAQERFAAUFERCIKCCIiAiggiIhIRAFBREQABQQREYkoIIiICKCAICIiEQUEEREBFBBERCSigCAiIkCKPZU73cFHx7jt0HFOjE+waWiAG3duZdf2da0ulojIgpp9/krVQjCz3Wb2mJkdM7MP1TjmbWZ21MyOmNnnEulFM3sk+jmQSN9iZt8wsx+a2RfMrGfp1Sl38NExbj5whLHTU6zszzF2eoqbDxzh4KNj9X4pEZG6asX5a8GAYGYBcCvwFuAyYK+ZXVZxzDbgw8BV7n458HuJhyfd/Yro59pE+seBW9x9GzAOvGtpVZnrtkPHyQXGQE8Ws/A2Fxi3HTpe75cSEamrVpy/0rQQdgDH3P24u08D+4HrKo75HeBWdx8HcPd5Q5iZGXA1cHeU9FfAWxdT8DROjE/QnwvK0vpzAaPjE/V+KRGRumrF+StNQNgAnEjcH43Skl4OvNzMvmZmXzez3YnH+sxsJEqPT/qrgefdvTBPnku2aWiAyXyxLG0yX2Tj0EC9X0pEpK5acf5KExCsSppX3M8C24BdwF7gDjNbGT12kbsPA78K/JmZ/aeUeYYvbnZDFFBGTp06laK4s27cuZV80ZmYLuAe3uaLzo07ty4qHxGRZmvF+StNQBgFNiXubwROVjnmS+6ed/fHgccIAwTufjK6PQ4cBK4EngFWmll2njyJnne7uw+7+/DatWtTVSq2a/s69l17OevO7+OFyTzrzu9j37WXa5aRiLS9Vpy/0kw7PQxsM7MtwJPAHsJv+0lfJGwZ3Glmawi7kI6b2RAw4e5no/SrgP/t7m5mDwDXE45JvAP4Ul1qVGHX9nUKACLSkZp9/lqwhRD1898E3At8H7jL3Y+Y2T4zi2cN3Qs8a2ZHgQeAD7j7s8ClwIiZfTtK/5i7H42e80Hg/WZ2jHBM4VP1rJiIiCyOuVftum9Lw8PDPjIy0upiiIh0FDN7KBrLnZeWrhAREUABQUREIgoIIiICKCCIiEikowaVzewU8B+tLkdKawivt+hm3V5H1a/zdXsd09bvYndf8EKujgoIncTMRtKM6neybq+j6tf5ur2O9a6fuoxERARQQBARkYgCQuPc3uoCNEG311H163zdXse61k9jCCIiAqiFICIiEQWEOjCzT5vZmJl9L5G2yszui/aMvi9a+bUjmdkmM3vAzL4f7Zn93ii9K+poZn1m9k0z+3ZUv/8ZpTd83+9mMrPAzB42s3+I7ndb/X5sZt+N9m8fidK64jMKYGYrzexuM3s0+l98Xb3rp4BQH3cCuyvSPgR8Ndoz+qvR/U5VAH7f3S8FXgu8O9pXu1vqeBa42t1/DrgC2G1mr6UJ+3432XsJVyyOdVv9AN4Q7d8eT8Xsls8owCeAr7j7duDnCP+W9a2fu+unDj/AZuB7ifuPAeuj39cDj7W6jHWs65eAa7qxjsAA8C3gNYQX/GSj9NcB97a6fEuo18bohHE18A+EuxZ2Tf2iOvwYWFOR1hWfUWAF8DjRuG+j6qcWQuO8xN2fAohuu2KXHjPbTLjr3TfoojpG3SmPAGPAfcCPaMK+3030Z8B/B0rR/absa95kDvyzmT1kZjdEad3yGd0KnAI+E3X73WFmg9S5fgoIkpqZnQf8HfB77v5iq8tTT+5edPcrCL9J7yDc3GnOYc0tVX2Y2S8BY+7+UDK5yqEdWb+Eq9z9lcBbCLs1d7a6QHWUBV4JfNLdrwTO0IDuLwWExnnazNYDRLdjLS7PkphZjjAYfNbd/z5K7qo6Arj784R7f7+WlPt+d4CrgGvN7MeEW9ZeTdhi6Jb6AWX7t48B9xAG9m75jI4Co+7+jej+3YQBoq71U0BonAOEe0VDA/eMbgYzM8ItTr/v7n+aeKgr6mhma81sZfR7P/BfCAfs4n2/oYPr5+4fdveN7r6ZcE/0+9391+iS+gGY2aCZnR//DrwJ+B5d8hl1958AJ8zskijpjcBR6lw/XZhWB2b2eWAX4cqDTwMfAb4I3AVcBDwB/Iq7P9eqMi6Fmb0e+Dfgu8z2Qf8PwnGEjq+jmf0s8FdAQPgl6S5332dmWwm/Ua8CHgbe7u5nW1fSpTOzXcAfuPsvdVP9orrcE93NAp9z94+a2Wq64DMKYGZXAHcAPcBx4DeJPq/UqX4KCCIiAqjLSEREIgoIIiICKCCIiEhEAUFERAAFBBERiSggiIgIoIAgIiIRBQQREQHg/wPwhvmbjjd7RgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.regplot(x,y)\n",
    "pandas.DataFrame({\"x\":x,\"y\":y}).corr()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### max_depth 决策树的最大深度与分类进度的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "col = sonar.columns.tolist()\n",
    "x = []\n",
    "y = []\n",
    "for i in range(2,15):\n",
    "    x.append(i)\n",
    "    data, labels = sonar.iloc[:, :-1], sonar.iloc[:, -1]\n",
    "    X_train, X_test, y_train, y_test = \\\n",
    "      train_test_split(data, labels, test_size=0.33, random_state=44)\n",
    "    clf = RandomForestClassifier(max_depth=i, random_state=10)\n",
    "    clf.fit(X_train, y_train)\n",
    "    y.append(clf.score(X_test, y_test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 发现深度到了10之后，就不再变化了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x2f248a28400>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,6))\n",
    "plt.ylim(0.6,0.9)\n",
    "plt.plot(x,y,color=\"r\")\n",
    "plt.scatter(x,y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>x</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.721342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>y</th>\n",
       "      <td>0.721342</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          x         y\n",
       "x  1.000000  0.721342\n",
       "y  0.721342  1.000000"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.regplot(x,y)\n",
    "pandas.DataFrame({\"x\":x,\"y\":y}).corr()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 利用GridSearchCV函数进行交叉验证参数优化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\ArcGIS\\Pro\\bin\\Python\\envs\\arcgispro-py3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "parameters = [{'n_estimators': list(range(25, 201, 25)),\n",
    "               'max_features': list(range(2, 15, 2))}]\n",
    "clf = GridSearchCV(RandomForestClassifier(), parameters,\n",
    "                   cv=5, scoring='accuracy', n_jobs=-1)\n",
    "clf.fit(X_train, y_train)\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_features': 2, 'n_estimators': 125}"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.782608695652174"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
